package cn.shengchao.examstar.ai.application.service;

import cn.shengchao.examstar.ai.domain.valueobject.SpecificationType;
import cn.shengchao.examstar.ai.domain.valueobject.UserId;
import cn.shengchao.examstar.ai.shared.enums.AiChatFreeType;

/**
 * AI工作流应用服务接口
 * 遵循DDD应用服务模式，协调领域对象完成特定用例
 */
public interface AIWorkflowApplicationService {
    
    /**
     * 获取类目名称，按层级拼接
     * 例如："一年级语文（专业版）"
     * 
     * @param specificationTypeId 类目ID
     * @return 按层级拼接的类目名称
     */
    String getHierarchicalSpecificationTypeName(SpecificationType specificationTypeId);
    
    /**
     * 获取指定类目下的知识点叶子节点名称列表，以"、"分隔
     * 
     * @param userId 用户ID
     * @param specificationTypeId 类目ID
     * @return 叶子节点名称列表，以"、"分隔
     */
    String getKnowledgeLeafNodeNames(UserId userId, SpecificationType specificationTypeId);
    
    /**
     * 获取指定类目下的知识点叶子节点列表，以JSON数组格式返回
     * 数组中每个元素包含知识点ID和名称
     * 例如：[{"id":"1","name":"知识点1"},{"id":"2","name":"知识点2"}]
     * 
     * @param userId 用户ID
     * @param specificationTypeId 类目ID
     * @return 叶子节点列表的JSON字符串
     */
    String getKnowledgeLeafNodesAsJson(UserId userId, SpecificationType specificationTypeId);

    /**
     * 获取用户剩余免费次数
     * @param userId
     * @return
     */
    Long getFreeSum(Long userId, AiChatFreeType aiChatFreeType);
} 